#include <iostream>
#include <random>
#include <sstream>
#include <iomanip>
#include <atomic>
class UUIDHelper
{
public:
    static std::string uuid()
    {
        //生成随机数
        std::random_device as;
        //以as为种子生成伟随机数
        std::mt19937_64 gen(as());
        //生成0-255随机数
        std::uniform_int_distribution<int> aq(0,255);
        std::stringstream ss;
        //生成8次0-255数并依次转化为俩宽度的16进制字符
        for(int i=0;i<8;i++)
        {
            ss<<std::setw(2)<<std::setfill('0')<<std::hex<<aq(gen);
            if(i==3||i==5||i==7)
            {
                ss<<'-';
            }
        }
        static std::atomic<size_t> qw(1);
        size_t num=qw.fetch_add(1);
        for(int i=7;i>=0;i--)
        {
           ss<<std::setw(2)<<std::setfill('0')<<std::hex<<((num>>(i*8))&0xff);
            if (i == 6) ss << "-";
        } 
        return ss.str();
    }
};
int main()
{
    for (int i = 0; i < 20; i++) {
        std::cout << UUIDHelper::uuid() << std::endl;
    }
    return 0;
}